package com.cn.wanxi.util;

import java.io.IOException;

public class ReadMe {
    /**
     * 2022-5-7
     * Java后台：
     * 1.后台三层架构 ：页面控制层servlet，服务逻辑层service，数据持久层dao
     * 2.jdbc   几大步骤（手写）思路：
     * 1）加载驱动
     * 2）得到链接：用户名，密码，地址
     * 3）编译sql语句
     * 4）执行sql语句
     * 5）返回结果集
     * 6）关闭连接
     * 3.继承：BaseService，
     * 4.封装：com.cn.wanxi.model.ResultModel
     * 5.单例模式：面试的时候至少写三种:饿汉，懒汉，双检锁，静态内部类，枚举模式
     * 6.sql语句练习：单表的增删查改（CRUD）,两张表的查询（左连接，右连接，内连接，联合查询）
     * 7.过滤器
     * 8.session认证
     * -----------------------------------------------------------
     * 前端知识点：
     * JavaScript基础
     * 1)变量定义
     * 2）数组
     * 3）字符串拼接
     * 4）语法结构（if，for）
     * 5）String的用法
     * 6）Date的用法
     * 7）Math的用法
     * jQuery：
     * 1）$.ajax({url:'',data:'',dataType:'',type:'',success:function(res){}});
     * 2）$("#id").html("");
     * 3)$("#id").attr("属性","值");
     * layui：
     * 1）form表单
     * 2）table表格
     * 3）文件上传
     * 4）富文本
     * 5）各种监听（1，div监听，2，操作栏监听）
     * 1.html里面写一个div（lay-filter="add",lay-submit）
     * 2.js里面有form.on('submit(login)', function (data) {
     * 6）打开页面或者弹出页面
     * 7）表单元素
     * 8）分页（必须要会）
     * ------------------------------------------------------------
     * 异常：
     * 1.npe NullPointerException
     * 1）数据转换的时候Integer.valueOf(page);
     * 2）user.add(""); 如果user为null
     * 3）数据库查询为空的时候：连接为空
     * 4)前端js，data.length;
     * 2.ArrayIndexOutOfBoundsException  数组下标越界  String [] aa={};aa[1]="aa";
     * 3.IOException
     * 4.NumberFormatException
     * 5.ClassNotFoundException 包没有引入正确
     * 6.IllegalArgumentException 内存溢出（死循环）
     * 7.FileNotFoundException 文件未找到
     * 8.NoSuchMethodException  没有匹配到方法（反射）
     * 9.启动问题：子级错误（地址有问题（接口））：接口地址：/url,不能一样
     * 404 找不到后台地址
     * 405
     * 406
     * 400
     * 只要4开头都是前端错误，找不到后台，5开头都是后台错误
     * 500
     * ------------------------------
     * 错误的解决方案：
     * 1.按F12查看控制台是否报错，
     * 2.查看是否已经访问到后台：Ajax地址：多用console.log(11);
     * 3.servlet  是否得到值：debug
     * 4.dao impl sql语句，一定记得把sql语句拿到后去workbench里面运行
     * ---------------------------------------------------------------
     * 学习新技术方法步骤：
     * 1.redis技术的定义？到底是什么技术？
     * 2.为什么要学？为什么要用？它的优势？
     * 3.用在哪里？应用场景？
     * 4.怎么用？在Java代码里面怎么写？
     * ---------------------------------
     * 1.下载安装
     * 2.配置环境变量
     * 端口：redis 6379
     * tomcat  8080
     * mysql  3306
     * https   80
     * -------------------------
     *
     */
    /**
     * 2022-5-11
     * redis再普通网站的使用
     * 1.一般网站首页会用到
     * 2.产品页面 一般用于第一页，第二页以后都不会遇到
     * 3.redis代码应该写在那个地方呢？
     * ------------------------------------
     * redis的数据再哪里来？
     * 第一次通过数据库查询，将查询出来的数据放入redis，
     * 第二次去查询的时候，首先判断redis里面是否有数据，
     * 如果没有，则直接查询数据库
     * 如果有，则直接再redis里面读取数据渲染到页面上
     * -------------------------------------
     */
    /**
     * 2022-5-12
     * 公司信息：更新的时候，只需要删除某一个关键key值，即可，因为其他值如果再次赋值，会覆盖以前的值
     * 导航信息，更新的时候，需要删除所有的key值，因为不删除，会直接将值插入到以前的list的后面
     * 类里面不允许出现和当前类不同的代码，或者功能
     * redis常用关键字：
     * del 删除key
     * exists  确认key是否存在
     * expire  key活跃时间
     * select  选中数据库
     * flushdb  删除当前选中的数据库
     * flushall  删除所有数据
     * ---------------
     * set
     * get
     * incr
     * decr
     * --------------
     * rpush
     * lpush
     * llen
     * lrange
     * lindex
     * lpop
     * ------------------------------
     * sinter
     * sunion
     * sdiff
     * ---------------
     *
     */
    /**
     * 2022-5-17
     * 多线程？
     * 1.定义？是什么？
     * 2.应用场景，可以做什么
     * 3.优势，为什么要用？
     * 4.怎么用？
     * --------------------------------------
     * 构造方法：创建对象 new ClassName();
     * 方法如果有final修饰，表示子类无法重写父类的方法
     * 类用final修饰，表示子类无法继承父类
     * 属性用final修饰，表示属性不可改变，一般用于常量
     * ------------------------------------
     * 开启线程的步骤：
     * 1.创建一个线程MyThread
     * 2.继承Thread，然后重写父类的run方法
     * 3.要有调用执行线程的类MyThreadTest
     * 4.创建线程对象 MyThread myThread = new MyThread();
     * 5.线程就绪： myThread.start();
     * ------------------------------
     * 线程的执行顺序和代码的书写顺序无关，是各个线程去抢占CPU的资源，
     * 线程的命名：1，给线程一个属性2，通过构造方法3.直接setName
     * --------------------
     * 抽象类里面不一定全是抽象方法
     * 抽象方法必须是抽象类
     * 抽象类里面的抽象方法不需要实现，而是有普通的类去实现抽象方法
     * 类和类 是通过继承进行扩展里面的方法，
     * 类和接口是通过实现来扩展里面的方法
     * 接口和接口是通过继承去扩展里面的方法
     * -----------------------------------------------
     * runnable开始线程的步骤
     * 1.创建线程MyRunnable
     * 2.实现runnable接口，并重写run方法
     * 3.创建执行类
     * 4.创建MyRunnable对象
     * 5.创建线程对象，并将MyRunnable放入线程的构造方法Thread thread=new Thread(myRunnable);
     * 6.线程就绪：线程开启
     * -------------------------------------
     * 1）创建线程
     * 2）线程取名
     * 3）线程对象的获取
     * ----------------------------
     */
    /**
     * 2022-5-18
     * 线程设置优先级：setPriority 1和10之间
     * 大概率会优先，并不是一定先执行
     * synchronized 这个表示单线程，同步锁
     * 线程的几个状态：
     * start  线程就绪
     * run 线程执行
     * wait  线程等待
     * join  线程加入
     */
    /**
     *  2022-5-19
     *  生产者和消费者模型
     *  定时器
     *  线程的什么周期
     *  Object的常用方法
     *  getClass
     *  clone
     *  toString
     *  wait
     *  notify
     *  finalize
     *  equals
     *  hashCode
     *  克隆：拷贝：深拷贝，浅拷贝
     *  finalize和final和finally的区别？
     *  finally在什么情况下会执行里面的代码？
     *  有可能不执行，有可能执行？
     *  --------------------------------------------
     *
     */
    public static void main(String[] args) {
        while (true) {
            System.out.println(1);
        }

//        Object
    }

    public static void aa(int a, int b) {

    }
}
